package dletc.job;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Job {

	public static void main(String[] args) throws IOException {
		
		/**
		 * 练习一:字符输出流写出字节数据
			描述:利用字节输出流一次写一个字节的方式，向D盘的a.txt文件输出字符‘a’
		 */

		File file = new File("D:\\a.txt");
		
		FileWriter fw = new FileWriter(file);
		
		fw.write("a");
		
		fw.flush();
		
		fw.close();
		
		/**
		 * 练习二:字符输出流写出字节数组数据
			描述:利用字节输出流一次写一个字节数组的方式向D盘的b.txt文件输出内容:"i love java"。

		 */
		FileWriter fw2 = new FileWriter(new File("D:\\b.txt"));
		fw2.write("i love java");
		fw2.flush();
		fw2.close();
		
		/**
		 * 练习三:文件的续写和换行输出
			描述:在D盘下，有一c.txt 文件中内容为：HelloWorld 
			在c.txt文件原内容基础上，添加五句 I love java，而且要实现一句一行操作(注：原文不可覆盖)。
			利用字节输出流对象往C盘下c.txt文件输出5句：”i love java”

		 */
		
		FileWriter fw3 = new FileWriter(new File("D:\\c.txt"));
		
		for(int i = 0; i < 5; i++){
			fw3.write("HelloWorld\n");
		}
		
		fw3.flush();
		fw3.close();
		
		/*//用循环呀 兄弟 写这么多 什么鬼！！！！
		 * 而且要实现一句一行操作   原文不可覆盖  new FileWriter(file,true)  
		FileWriter fw4 = new FileWriter(new File("D:\\c.txt"),true);
		fw4.write("i love java\n");
		fw4.close();
		FileWriter fw5 = new FileWriter(new File("D:\\c.txt"),true);
		fw5.write("i love java\n");
		fw5.close();
		FileWriter fw6 = new FileWriter(new File("D:\\c.txt"),true);
		fw6.write("i love java\n");
		fw6.close();
		FileWriter fw7 = new FileWriter(new File("D:\\c.txt"),true);
		fw7.write("i love java\n");
		fw7.close();
		FileWriter fw8 = new FileWriter(new File("D:\\c.txt"),true);
		fw8.write("i love java\n");
		fw8.close();*/
		
		/**
		 * 描述:利用字节输入流读取D盘文件a.txt的内容，文件内容确定都为纯ASCII字符
			,使用循环读取，一次读取一个字节，直到读取到文件末尾。将读取的字节输出到控制台

		 */
		
		FileReader rd = new FileReader(file);
		
		int num;
		while((num = rd.read()) != -1){
			System.out.println((char)num);
		}
		
		/**
		 * 练习五:字符输入流一次读取一个字节数组数据
			描述:利用字节输入流读取D盘文件b.txt的内容，文件内容确定都为纯ASCII字符
			,使用循环读取，一次读取一个字符数组，直到读取到文件末尾，将读取到的字符数组转换成字符串输出到控制台。
		 */
		
		FileReader rd2 = new FileReader(new File("D:\\b.txt"));
		
		char[] ch = new char[5];
		int len;
		
		while((len = rd2.read(ch)) != -1){
			//方法一：
			/*for(int i = 0; i < len ; i++ ){
				System.out.print(ch[i]);
			}*/
			//方法二：
			String str = new String(ch,0,len);
			System.out.print(str);
			
		}
		
		/**
		 * 练习六:字节流复制文件
			描述:利用字节流将E盘下的a.txt图片复制到D盘下(文件名保存一致)
		 */
		
		File file2 = new File("E:\\a.txt");
		
		boolean renameTo = file.renameTo(file2);
		System.out.println(renameTo);
		
		/**
		 * 练习七:字符输出流写出字符数据
			项目需求：请用户从控制台输入信息，程序将信息存储到文件Info.txt中。可以输入多条信息，每条信息存储一行。当用户输入：”886”时，程序结束。
		 */
		Scanner s = new Scanner(System.in);
		
		get(s);
		
		

	}
	
	public static void get(Scanner s){
		
		FileWriter fw9 = null;
		try {	
			File file3 = new File("Info.txt");
			fw9 = new FileWriter(file3,true);
			
			while(true){
				System.out.print("请输入信息(886退出)：");
				String next = s.next();
				fw9.write(next + "\n");
				if(next.equals("886")){
					return;
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if(fw9 != null)fw9.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
	}

}
